草庐IT

Java NIO - Files.isSameFile 与 Path.equals 有何不同

全部标签

java - Java 中的 equals() 和 hashCode() 契约

BertBates和KathySierra的SCJP6学习指南第554页(以及其他要求)指出x.hashCode()!=y.hashCode()要求x.equals(y)==false.但是Object的Javadoc并没有明确提到这样的要求。引用:如果根据equals(Object)方法两个对象相等,则对这两个对象中的每一个调用hashCode方法必须产生相同的整数结果。我是否应该将Javadoc所说的视为实质蕴涵,例如eq->hc?那么这两个来源之间就不会有冲突。 最佳答案 这两个语句是等价的。简单地说:如果两个hashcode

java - 在 Java 中对 String 和 Object 使用 equals() 方法

Objecto1=newObject();Objecto2=newObject();//o1=o2;System.out.println(o1.equals(o2));它返回false。如果注释被删除,它可以返回true。为什么同样的事情不适用于String类?Strings1=newString();Strings2=newString();System.out.println(s1.equals(s2));它返回true。为什么?(因为String使用实习生或其他涉及的东西?) 最佳答案 因为equals()forString比

java - 有hashCode()为什么Java还需要equals()?

如果两个对象返回相同的hashCode,不就说明它们相等吗?或者我们需要equals来防止碰撞?我可以通过比较hashCode来实现equals吗? 最佳答案 如果两个对象具有相同的hashCode,则它们不一定相等。否则你会发现完美的散列函数。但恰恰相反——如果对象相等,则它们必须具有相同的hashCode。 关于java-有hashCode()为什么Java还需要equals()?,我们在StackOverflow上找到一个类似的问题: https://s

java - 尽管 hashCode() 和 equals() 为真,但 HashMap containsKey() 返回假

我有一个HashMap称为vertexIndexes.如果我用这段代码遍历它:publicbooleansearch(StringvertexName){for(Vertexname:vertexIndexes.keySet()){Stringkey=name.toString();Stringvalue=vertexIndexes.get(name).toString();System.out.println(key+""+value+""+(name.hashCode()==vertexName.hashCode())+""+name.equals(vertexName));}..

java - 对于 Java 和 C 编译器,代码的行为有何不同?

我有这段代码,我在Java和C上运行了它,但它们给了我两个不同的结果。是什么让它们以不同的方式运行。x=10;y=10;z=10;y-=x--;z-=--x;x-=--x-x--;X的值在Java中的输出是:8,对于C,它是6。这两个编译器对于递增选项的行为有何不同? 最佳答案 当您说这段代码被视为C程序的输出是6时,您是错误的。作为C程序,这是undefined.您的编译器只是碰巧得到6,但您也可能得到24、段错误或编译时错误。参见C99standard,6.5.2:在前一个和下一个序列点之间,一个对象应该有它的存储值最多通过表达

java - Nashorn,Java 集合,如何在纯 javascript 中实现 equals 和 hashCode

我遇到了以下问题。我想在Nashorn脚本中使用java.util.HashMap和java.util.PriorityQueue,我需要在其中使用特定的自定义对象作为HashMap中的键,并使用HashMap.containsKey()检查Map中是否有键(另一种选择是检查对象是否在Collection.contains(Objecto)).因此,显然,我需要根据某些字段值在我的对象中实现equals和hashCode。例如:尝试使用JavaScript。不起作用,因为JavaScript没有这些方法。请参阅示例1和示例2扩展java.lang.Object。示例3。部分工作,正在调

java - 如何使用 Java 8 `Files.find` 方法?

我正在尝试编写一个应用程序以在其中使用Files.find方法。下面的程序完美运行:packageehsan;/*Ihaveremovedimportsforcodebrevity*/publicclassMain{publicstaticvoidmain(String[]args)throwsIOException{Pathp=Paths.get("/home/ehsan");finalintmaxDepth=10;Streammatches=Files.find(p,maxDepth,(path,basicFileAttributes)->String.valueOf(path).

java - 从不同于网络(通过 Amazon S3)的本地文件读取 InputStream 对象有何不同?

我不认为从本地文件读取的输入流对象与从网络源(在本例中为AmazonS3)读取的输入流对象之间没有区别,所以希望有人能启发我。这些程序在运行Centos6.3的虚拟机上运行。两种情况下的测试文件都是10MB。本地文件代码:InputStreamis=newFileInputStream("/home/anyuser/test.jpg");intread=0;intbuf_size=1024*1024*2;byte[]buf=newbyte[buf_size];ByteArrayOutputStreambaos=newByteArrayOutputStream(buf_size);lon

Java 7 NIO.2 Files.getLastModifiedTime 时区

我正在编写一个程序,需要确定文件/目录的最后修改时间。我想使用JodaTime来处理这个时间,我正在使用Java7NIO.2类Files来获取文件的上次修改时间。它的getLastModifiedTime()方法返回一个FileTime类的实例,它有方便的方法toMillis(),我将其结果传递给JodaTimeDateTime类构造函数:newDateTime(Files.getLastModifiedTime(path).toMillis());但是,我觉得我做错了,因为DateTime(long)构造函数明确提到DateTime实例将使用默认时区创建。但是,FileTime文档并

java - equals() 的实现 : compare against implemented interface or implementing class?

我一直想知道如何最好地为所有实现相同接口(interface)的类系列实现equals()(并且客户端应该只使用所述接口(interface)并且永远不知道实现类)。我还没有编写自己的具体示例,但JDK中有两个示例-java.lang.Number和java.lang.CharSequence可以说明该决定:booleanb1=newByte(0).equals(newInteger(0)));或使用CharSequencebooleanb2="".equals(newStringBuilder());理想情况下,您是否希望这些评估为真或假?这两种类型都实现了相同的数据类型接口(int